From 8a1d582d657e5d3b0fa4aa746aec33557bd65a65 Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Tue, 31 Aug 2004 19:38:26 +0000 Subject: [PATCH] bitkeeper revision 1.1159.53.27 (4134d3b2RKqSKYYMoQoESXU2EtGiiQ) Build fixes and move set_current() earlier in boot (Charles Coffing). --- xen/arch/x86/memory.c | 4 ++-- xen/common/kernel.c | 17 +++++++---------- xen/include/xen/spinlock.h | 2 -- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index f6a5657798..3dfa8b3460 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -1042,7 +1042,7 @@ static int do_extended_command(unsigned long ptr, unsigned long val) if ( unlikely(e->tot_pages == e->max_pages) || unlikely(!gnttab_prepare_for_transfer(e, d, gntref)) ) { - MEM_LOG("Transferee has no reservation headroom (%ld,%ld), or " + MEM_LOG("Transferee has no reservation headroom (%d,%d), or " "provided a bad grant ref.\n", e->tot_pages, e->max_pages); spin_unlock(&e->page_alloc_lock); put_domain(e); @@ -1731,7 +1731,7 @@ static void ptwr_init_backpointers(void) page = &frame_table[pde >> PAGE_SHIFT]; /* assert that page is an l1_page_table XXXcl maybe l2? */ if ( (page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table ) { - MEM_LOG("ptwr: Inconsistent pagetable: pde %x is not an l1 page\n", + MEM_LOG("ptwr: Inconsistent pagetable: pde %lx not an l1 page\n", pde >> PAGE_SHIFT); domain_crash(); } diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 2c67cf7506..9b2a3cd70c 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -183,6 +183,9 @@ void cmain(multiboot_info_t *mbi) } } + /* Must do this early -- e.g., spinlocks rely on get_current(). */ + set_current(&idle0_task); + /* We initialise the serial devices very early so we can get debugging. */ serial_init_stage1(); @@ -218,8 +221,6 @@ void cmain(multiboot_info_t *mbi) for ( ; ; ) ; } - set_current(&idle0_task); - xenheap_phys_end = opt_xenheap_megabytes << 20; max_mem = max_page = (mbi->mem_upper+1024) >> (PAGE_SHIFT - 10); @@ -401,20 +402,14 @@ static int crit_count[NR_CPUS], crit_checking_disabled[NR_CPUS]; void disable_criticalregion_checking(void) { int cpu = smp_processor_id(); - ASSERT(crit_checking_disabled[cpu] >= 0); crit_checking_disabled[cpu]++; } -void enable_criticalregion_checking(void) -{ - int cpu = smp_processor_id(); - crit_checking_disabled[cpu]--; - ASSERT(crit_checking_disabled[cpu] >= 0); -} - void criticalregion_enter(void) { int cpu = smp_processor_id(); + if ( crit_checking_disabled[cpu] ) + return; ASSERT(crit_count[cpu] >= 0); crit_count[cpu]++; } @@ -422,6 +417,8 @@ void criticalregion_enter(void) void criticalregion_exit(void) { int cpu = smp_processor_id(); + if ( crit_checking_disabled[cpu] ) + return; crit_count[cpu]--; ASSERT(crit_count[cpu] >= 0); } diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h index fc2409f13d..8998c29894 100644 --- a/xen/include/xen/spinlock.h +++ b/xen/include/xen/spinlock.h @@ -78,7 +78,6 @@ extern void criticalregion_enter(void); extern void criticalregion_exit(void); extern void ASSERT_no_criticalregion(void); extern void disable_criticalregion_checking(void); -extern void enable_criticalregion_checking(void); #define spin_lock(_lock) \ do { criticalregion_enter(); _raw_spin_lock(_lock); } while (0) @@ -112,7 +111,6 @@ static inline int spin_trylock(spinlock_t *lock) #define ASSERT_no_criticalregion() ((void)0) #define disable_criticalregion_checking() ((void)0) -#define enable_criticalregion_checking() ((void)0) #define spin_lock(_lock) _raw_spin_lock(_lock) #define spin_trylock(_lock) _raw_spin_trylock(_lock) -- 2.30.2